Blockstack Dev 分享 | 最详细DID身份授权流程
一块链习是首家区块链技术学习社区,提供最系统的区块链技术课程学习,定期出品有深度的技术观察 + 评论。
《 Blockstack:从开发入门到技术实战》课程训练营是由一块链习和 Blockstack 共同打造的全球第一档· Blockstack 开发中文实战课程。
每周日晚8点,作为课程内容知识拓展——助教技术分享会,由各位第一期的助教们自发轮流在线上进行分享,为学员们详细解读一个 Blockstack 技术相关内容。
昨晚,由KuCoin 资深前端工程师——曹帅助教在直播间为大家带来第二讲「Blockstack 身份授权流程」,内容复盘如下。
.01 为什么需要应用授权
用户
gaia 通过 app 域名隔离数据权限,无需担心全量数据安全
可以使用多身份来管理相同的应用数据
使用应用之前明确的清楚应用的权限范围
可以将数据在不同应用之间迁移
开发者
无需单独实现账户注册与用户管理等服务
不需要处理复杂的加密解密等校验逻辑
Blockstack
一套 DID 身份与用户数据管理标准
提供更多的应用基础设施服务
.02 应用授权的流程
构建 Token 并跳转
通过 Blockstack.js 所提供的 redirectToSignIn 方法跳转到 BlockstackBrowser 完成授权
构建请求体 authRequest
generateAndStoreTransitKey 生成一个临时并随机的公私钥 Key
返回一个经过编码的 authRequest 字符串
launchCustomProtocol 封装一系列的逻辑并跳转至 BlockstackBrowser
添加一些超时和请求序号等操作
Browser 接收参数并解析
Blockstack 浏览器端接收到 authRequest 参数触发验证流程
app/js/auth/index.js 中使用 verifyAuthRequestAndLoadManifest 校验 authRequest 合法性并获取 DApp 的 Manifest.json 文件
verifyAuthRequest 校验 Token 的合法性
fetchAppManifest 获取应用 Manifest.json 文件
getFreshIdentities 通过用户缓存在浏览器中的登录信息 addresses (地址)获取用户的信息
请求
https://core.blockstack.org/addresses/bitcoin/${address} 获得用户比特币地址的信息
加载用户域名信息
从 Gaia 获取用户 profile 文件的位置,并拿到用户的 profile 文件
用户根据 profile 中包含的身份信息让用户选择需要授权的用户名,触发 login
客户端 noCoreStorage 作为监听标志来构造 authRespon
获取用户的 profileUrl
获取 app 的 bucketUrl
创建并更新用户的 Profile 中 apps 的数据
构建 AuthResponse Token
生成 appPrivateKey
生成 gaiaAssociationToken
通过 Blockstack.js 的 redirectUserToApp 返回应用
redirect URI
调用 userSession.SignInPending 或 userSession.handlePendingSignIn 能够触发对 AuthResponse 的解析
通过 verifyAuthResponse 进行一系列的验证, fetchPrivate 获得授权用户的profile 数据
持久化用户数据到浏览器 localstorage
.03 代码解析
Browser 端的参数解析与数据加载
Browser 端的解析和 Manifest 拉取
用户点击登录之后的授权流程
name ‑ 用户的域名
profile ‑ 域名下的身份信息
email ‑ 用户的邮箱信息decentralizedID ‑ DID
identityAddress ‑ 用户身份的 BTC 地址
appPrivateKey ‑ app 应用的私钥
coreSessionToken ‑ V2 预留
authResponseToken ‑ browser 返回的授权信息 Token
hubUrl ‑ gaia hub 的地址
gaiaAssociationToken ‑ app 与 gaia 交互所需要的 token
gaiaHubConfig ‑ gaia 服务器的配置信息
扫码进直播间,回看完整分享!
更多阅读:
|Blockstack Dev 讨论 | 帮你少走弯路的教程在这里
|Blockstack Dev 周记 | “Blockstack 是基础设施最完善的平台”
|Blocksatck Dev 分享 | BTC 钱包技术都在这里了
扫码关注公众号,回复“1”加入开发者社群